/**
 * @author Loic Bar
 */

(function(){
	powerTodo.UI = {};
	
	powerTodo.UI.createBasedLayout = function()
	{
		var tabGroup = Titanium.UI.createTabGroup();
		
		var todoListWindow = powerTodo.UI.createTodoListWindow();
		var urgentTodoListWindow = powerTodo.UI.createUrgentTododListWindow();
		var lateTodoListWindow = powerTodo.UI.createLateTododListWindow();
		var createTodoWindow = powerTodo.UI.createAddTodoWindow();
		
		powerTodo.tabTodos = Ti.UI.createTab({
			window: todoListWindow,
			title: 'Toutes'
		});
		
		todoListWindow.activity = {
			onCreateOptionsMenu : function(e) {
				var menu = e.menu;
				var m1 = menu.add({ title : 'Nouveau' });
				m1.addEventListener('click', function(e) {
					powerTodo.tabTodos.open(createTodoWindow);
				});
			}
		};
		
		powerTodo.tabUrgentTodo = Ti.UI.createTab({
			window: urgentTodoListWindow,
			title: 'Urgentes'
		});
		
		urgentTodoListWindow.activity = {
			onCreateOptionsMenu : function(e) {
				var menu = e.menu;
				var m1 = menu.add({ title : 'Nouveau' });
				m1.addEventListener('click', function(e) {
					powerTodo.tabUrgentTodo.open(createTodoWindow);
				});
			}
		};
		
		powerTodo.tabLateTodo = Ti.UI.createTab({
			window: lateTodoListWindow,
			title: 'En retard'
		});
		
		lateTodoListWindow.activity = {
			onCreateOptionsMenu : function(e) {
				var menu = e.menu;
				var m1 = menu.add({ title : 'Nouveau' });
				m1.addEventListener('click', function(e) {
					powerTodo.tabLateTodo.open(createTodoWindow);
				});
			}
		};
		
		tabGroup.addTab(powerTodo.tabTodos);
		tabGroup.addTab(powerTodo.tabUrgentTodo);
		tabGroup.addTab(powerTodo.tabLateTodo);
		
		return tabGroup;
	};
	
	powerTodo.UI.createSearch = function() {
		var searchBar = Titanium.UI.createSearchBar({
			hintText:'taper pour filtrer',
			showCancel:true
		});
		
		searchBar.addEventListener('change', function(e)
		{
		  // search rows for value of string as user types
		  e.source.value;
		});
		searchBar.addEventListener('return', function(e)
		{
		  // dismiss the keypad when user presses return
		  e.source.blur();
		});
		searchBar.addEventListener('cancel', function(e)
		{
		  // dismiss the keypad when user presses the cancel button
		  e.source.blur();
		});
		
		return searchBar;
	};
	
	powerTodo.UI.createTodoListWindow = function()
	{
		var win = Ti.UI.createWindow({
			title:'Toutes mes tches',
			backgroundColor:'#fff',
			layout:'vertical'
		});
		
		var searchBar = powerTodo.UI.createSearch();
		
		var table = Ti.UI.createTableView({
			search:searchBar
		});
		
		table.addEventListener('click', function(_e) {
			powerTodo.tabTodos.open(powerTodo.UI.createTodoDetailWindow(_e.rowData.id));
		});
		
		function updateData(){
			var data = powerTodo.DB.getListOfTodo();
			table.setData(data);
		}
		
		updateData();
		
		Ti.App.addEventListener('databaseUpdated', updateData);
		
		win.add(table);
		
		if (Ti.Platform.osname === 'iphone') {
			var b = Titanium.UI.createButton({
				title:'Nouveau',
				style:Titanium.UI.iPhone.SystemButtonStyle.PLAIN
			});
			b.addEventListener('click',function() {
				winAddContact.open({modal:true});
			});
			win.setRightNavButton(b);
		}
		
		return win;
	};
	
	powerTodo.UI.createUrgentTododListWindow = function()
	{
		var win = Ti.UI.createWindow({
			title:'Tches urgentes',
			backgroundColor:'#fff',
			layout:'vertical'
		});
		
		
		
		var searchBar = powerTodo.UI.createSearch();
		
		var table = Ti.UI.createTableView({
			search:searchBar
		});
		
		table.addEventListener('click', function(_e) {
			powerTodo.tabTodos.open(powerTodo.UI.createTodoDetailWindow(_e.rowData.id));
		});
		
		function updateData(){
			var data = powerTodo.DB.getUrgentListOfTodo();
			table.setData(data);
		}
		
		updateData();
		
		Ti.App.addEventListener('databaseUpdated', updateData);
		
		
		win.add(table);
		
		if (Ti.Platform.osname === 'iphone') {
			var b = Titanium.UI.createButton({
				title:'Nouveau',
				style:Titanium.UI.iPhone.SystemButtonStyle.PLAIN
			});
			b.addEventListener('click',function() {
				winAddContact.open({modal:true});
			});
			win.setRightNavButton(b);
		}
		
		return win;
	};
	
	powerTodo.UI.createLateTododListWindow = function()
	{
		var win = Ti.UI.createWindow({
			title:'Tches en retard',
			backgroundColor:'#fff',
			layout:'vertical'
		});
		
		var searchBar = powerTodo.UI.createSearch();
		
		var table = Ti.UI.createTableView({
			search:searchBar
		});
		
		table.addEventListener('click', function(_e) {
			powerTodo.tabTodos.open(powerTodo.UI.createTodoDetailWindow(_e.rowData.id));
		});
		
		function updateData(){
			var data = powerTodo.DB.getLateListOfTodo();
			table.setData(data);
		}
		
		updateData();
		
		Ti.App.addEventListener('databaseUpdated', updateData);
		
		win.add(table);
		
		if (Ti.Platform.osname === 'iphone') {
			var b = Titanium.UI.createButton({
				title:'Nouveau',
				style:Titanium.UI.iPhone.SystemButtonStyle.PLAIN
			});
			b.addEventListener('click',function() {
				winAddContact.open({modal:true});
			});
			win.setRightNavButton(b);
		}
		
		return win;
	};
	
	powerTodo.UI.createAddTodoWindow = function()
	{
		var win = Ti.UI.createWindow({
			title:'Ajouter une nouvelle tche',
			layout:'vertical'
		});
		
		var tbName = Ti.UI.createTextField({
			hintText:'Indiquez le nom de votre tche',
			top:10,
			left:10,
			width:250,
		});
		
		win.add(tbName);
		
		var labelForDatePicker = Ti.UI.createLabel({
			text:"Date d'chance",
			top:10,
			left:10,
			width:200,
		});
		
		win.add(labelForDatePicker);
		
		var minDate = new Date();
		minDate.setFullYear(2011);
		minDate.setMonth(0);
		minDate.setDate(1);
		
		var maxDate = new Date();
		maxDate.setFullYear(2011);
		maxDate.setMonth(11);
		maxDate.setDate(31);
		
		var value = new Date();
		
		var picker = Ti.UI.createPicker({
		    type: Ti.UI.PICKER_TYPE_DATE,
		    minDate: minDate,
		    maxDate: maxDate,
		    value: value,
		    top:10,
		    left:10,
		});

		// par defaut false
		picker.selectionIndicator = true;
		
		win.add(picker);
		
		var addButton = Ti.UI.createButton({
			title:'Ajouter',
			top: 10,
			left: 10,
			width:200
		});
		
		addButton.addEventListener('click', function(e){
			powerTodo.DB.addTodo(tbName.value, picker.value.getTime());
		});
		
		win.add(addButton);
		
		if (Ti.Platform.osname === 'iphone') {
			var b = Titanium.UI.createButton({
				title:'Fermer',
				style:Titanium.UI.iPhone.SystemButtonStyle.PLAIN
			});
			b.addEventListener('click',function() {
				win.close();
			});
			win.setRightNavButton(b);
		}
		
		return win;
	};
	
	powerTodo.UI.createTodoDetailWindow = function(/* id */ _todoId)
	{
		var win = Ti.UI.createWindow({
			title: 'Detail',
			layout: 'vertical'
		});
		
		var todo = powerTodo.DB.getTodo(_todoId);
		
		var tbTitle = Ti.UI.createTextField({
			value:todo.title,
			top: 10,
			left:10,
			width: 200
		});
		
		win.add(tbTitle);
		
		var labelForDatePicker = Ti.UI.createLabel({
			text:"Date d'chance",
			top:10,
			left:10,
			width:200,
		});
		
		win.add(labelForDatePicker);
		
		var minDate = new Date();
		minDate.setFullYear(2011);
		minDate.setMonth(0);
		minDate.setDate(1);
		
		var maxDate = new Date();
		maxDate.setFullYear(2011);
		maxDate.setMonth(11);
		maxDate.setDate(31);
		
		var value = new Date(todo.date);
		
		var picker = Ti.UI.createPicker({
		    type: Ti.UI.PICKER_TYPE_DATE,
		    minDate: minDate,
		    maxDate: maxDate,
		    value: value,
		    top:10,
		    left:10,
		});

		// par defaut false
		picker.selectionIndicator = true;
		
		win.add(picker);
		
		var bottomView = Ti.UI.createView({
			bottom:0,
			left:0,
			right:0,
			layout:'horizontal'
		})
		
		var saveButton = Ti.UI.createButton({
			title:'Enregistrer',
			left:10,
		});
		
		saveButton.addEventListener('click', function(e){
			powerTodo.DB.editTodo(todo.id, tbTitle.value, picker.value.getTime());
		});
		
		bottomView.add(saveButton);
		
		var deleteButton = Ti.UI.createButton({
			title:'Supprimer',
			left:10,
		});
		
		deleteButton.addEventListener('click', function(e){
			powerTodo.DB.deleteTodo(todo.id);
		});
		
		bottomView.add(deleteButton);
		
		win.add(bottomView);
		
		return win;
	};
	
	powerTodo.UI.createEditTodoWindow = function(/* id */ todoId)
	{
		var win = Ti.UI.createWindow({
			title:'Editer',
		});
		
		return win;
	};	
	
})()
